package com.free.company.member.service;

import com.free.company.member.controller.AuthInfoController;
import com.free.ext.logger.FreeLogger;
import com.free.ext.logger.FreeLoggerFactory;
import com.free.ext.wechat.WechatAccount;
import com.free.ext.wechat.WxAccntManager;
import com.free.ext.wechat.WxProxyManager;
import com.free.ext.wechat.qy.QyWxProxy;
import com.free.utils.crypt.SHACrypt;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
public class CommonService {
    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/
    FreeLogger LOGGER = FreeLoggerFactory.getLogger(AuthInfoController.class);
    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    protected boolean checkSign(String appId, String ts, String sign){
        WechatAccount acc = WxAccntManager.getAccount(appId);
        StringBuffer sb = new StringBuffer();
        sb.append(appId).append(acc.getAppsecret()).append(ts);
        return SHACrypt.sha1Hex(sb.toString()).equals(sign);
    }

    protected <T> T getProxy(String appId){
        LOGGER.info("appid:{}取proxY", appId);
        WechatAccount acc = WxAccntManager.getAccount(appId);
        LOGGER.info("appid:{}获得微信账号:{}", appId, acc.toString());
        if(acc == null){
            return null;
        }
        T proxy = WxProxyManager.getProxy(acc);
        return proxy;
    }

    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
